<?php
/**
 * ＺＥＮＤパーシャルライブラリ
 * インプット群：チェックボックスコントローラモジュール
 */
require_once __DIR__ . '/../InputController.php';

class ZendPatrial_Input_CheckboxController extends ZendPartial_InputController
{
	/** テンプレートファイル名 */
	const NAME_TEMPLATE = 'checkbox.tpl';
	/** ハッシュキー：値 */
	const KEY_VALUE = 'VALUE';
	/** ハッシュキー：ラベル */
	const KEY_LABEL = 'LAVEL';

	/** ラベルリスト */
	protected $_LabelList = array();
	/** HTTPリクエストキー */
	protected $_HttpRequestKey;

	/**
	 * コンストラクタ
	 * @param unknown_type $Name
	 * @param unknown_type $TemplateDir
	 */
	public function __construct($Name, $TemplateDir='')
	{
		if ($TemplateDir == '') {
			$TemplateDir = __DIR__;
		}
		parent::__construct($TemplateDir);
		$this->_HttpRequestKey = $Name;
		$this->NAME = $Name . '[]';
	}

	/**
	 * ラベルを追加する
	 * @param unknown_type $Value
	 * @param unknown_type $Label
	 */
	public function add($Value, $Label)
	{
		$this->_LabelList[]
		= array(
				self::KEY_VALUE=>$Value,
				self::KEY_LABEL=>$Label
				);
	}

	/**
	 * フェッチ
	 * @see ZendPartial_InputController::fetch()
	 */
	public function fetch($index, $TemplateFileName='')
	{
		if ($TemplateFileName == ''){
			$TemplateFileName = self::NAME_TEMPLATE;
		}
		$this->VALUE = $this->_LabelList[$index][self::KEY_VALUE];
		$this->view->LABEL = $this->_LabelList[$index][self::KEY_LABEL];
		$this->_setChecked();
		$sHtml = parent::fetch($TemplateFileName);
		return $sHtml;
	}

	protected function _setChecked()
	{
		if (isset($_REQUEST[$this->_HttpRequestKey])){
			$HttpRequestValueList = $_REQUEST[$this->_HttpRequestKey];
			if (!is_array($HttpRequestValueList)) {
				if ($this->VALUE == $HttpRequestValueList) {
					$this->view->CHECKED = 'checked="checked"';
				}else{
					$this->view->CHECKED = '';
				}
			}else if (array_search($this->VALUE, $HttpRequestValueList) !== FALSE) {
				$ret = array_search($this->VALUE, $HttpRequestValueList);
				$this->view->CHECKED = 'checked="checked"';
			}else{
				$this->view->CHECKED = '';
			}
		}
	}
};